import java.util.HashMap;

public class Solution {
    public boolean containsNearbyDuplicate(int[] nums, int k) {
        // 使用哈希表来存储元素及其索引
        HashMap<Integer, Integer> map = new HashMap<>();

        // 遍历数组
        for (int i = 0; i < nums.length; i++) {
            // 如果当前元素在哈希表中存在，检查是否满足条件
            if (map.containsKey(nums[i])) {
                // 判断元素的索引差是否小于等于k
                if (i - map.get(nums[i]) <= k) {
                    return true;
                }
            }
            // 更新哈希表中当前元素的索引
            map.put(nums[i], i);
        }

        // 如果没有找到符合条件的元素对，返回false
        return false;
    }

    public static void main(String[] args) {
        Solution solution = new Solution();

        // 示例 1
        int[] nums1 = {1, 2, 3, 1};
        int k1 = 3;
        System.out.println(solution.containsNearbyDuplicate(nums1, k1)); // 输出 true

        // 示例 2
        int[] nums2 = {1, 0, 1, 1};
        int k2 = 1;
        System.out.println(solution.containsNearbyDuplicate(nums2, k2)); // 输出 true

        // 示例 3
        int[] nums3 = {1, 2, 3, 1, 2, 3};
        int k3 = 2;
        System.out.println(solution.containsNearbyDuplicate(nums3, k3)); // 输出 false
    }
}
